package com.iwayin.core.bo.user;

import java.util.List;

import com.iwayin.core.dataobject.UserDO;
import com.iwayin.core.vo.SearchVO;

public interface UserBO {
	Long addUser(UserDO user);
	
	/**
	 * 用户激活
	 * @param userId
	 * @return
	 */
	public UserDO updateActivateUser(UserDO user);

	UserDO getUserById(Long userId);
	/**
	 * 根据用户名查询用户
	 * 唯一
	 * @param loginName
	 * @return
	 */
	public UserDO getUserByLoginName(String loginName);
	/**
	 * 根据昵称查询用户
	 * @param nickname
	 * @return
	 */
	public UserDO getUserByNickName(String nickname);
	/**
	 * 根据邮箱查询用户
	 * 唯一
	 * @param email
	 * @return
	 */
	public UserDO getUserByEmail(String email);

	Integer updatePassword(UserDO user);
	/**
	 * 更新用户信息
	 * @param user
	 * @return
	 */
	public void updateUserInfo(UserDO user);
	/**
	 * 第三方用户完善信息
	 * @param user
	 */
	public void updateUserForOpen(UserDO user);
	/**
	 * 用户列表
	 * @param query
	 * @return
	 */
	public List<UserDO> listUser(UserDO query);
	
	/**
	 * 搜索用户（模糊搜索）
	 * @param query
	 * @param loginId登陆用户uid,用于设定与query的关注关系
	 * @return
	 */
	public List<SearchVO> searchUser(SearchVO query);
	
	/**
	 * 推荐好友
	 * @return
	 */
	public List<UserDO> recommendFriends(Long loginId,int size);
	/**
	 * 获取用户信息
	 * @param user
	 * @return
	 */
	public UserDO getUserInfo(Long loginUserId,Long otherUserId);
}
